import base64
from io import BytesIO
from PIL import Image


def images_are_same(img1: Image, img2: Image) -> bool:
    """
        Compare two PIL images.
    """
    if img1.size != img2.size or img1.mode != img2.mode:
        return False
    return list(img1.getdata()) == list(img2.getdata())


def encode_file_to_base64(file):
    """
       Convert a file to base64.
    """
    buffer = BytesIO()
    buffer.write(file.read())
    return base64.b64encode(buffer.getvalue()).decode()


# The templates is for CogAgent_Agent Template
templates_agent_cogagent = [
    "Can you advise me on how to <TASK>?",
    "I'm looking for guidance on how to <TASK>.",
    "What steps do I need to take to <TASK>?",
    "Could you provide instructions for <TASK>?",
    "I'm wondering what the process is for <TASK>.",
    "How can I go about <TASK>?",
    "I need assistance with planning to <TASK>.",
    "Do you have any recommendations for <TASK>?",
    "Please share some tips for <TASK>.",
    "I'd like to know the best way to <TASK>.",
    "What's the most effective way to <TASK>?",
    "I'm seeking advice on accomplishing <TASK>.",
    "Could you guide me through the steps to <TASK>?",
    "I'm unsure how to start with <TASK>.",
    "Is there a strategy for successfully <TASK>?",
    "What's the proper procedure for <TASK>?",
    "How should I prepare for <TASK>?",
    "I'm not sure where to begin with <TASK>.",
    "I need some insights on <TASK>.",
    "Can you explain how to tackle <TASK>?",
    "I'm interested in the process of <TASK>.",
    "Could you enlighten me on <TASK>?",
    "What are the recommended steps for <TASK>?",
    "Is there a preferred method for <TASK>?",
    "I'd appreciate your advice on <TASK>.",
    "Can you shed light on <TASK>?",
    "What would be the best approach to <TASK>?",
    "How do I get started with <TASK>?",
    "I'm inquiring about the procedure for <TASK>.",
    "Could you share your expertise on <TASK>?",
    "I'd like some guidance on <TASK>.",
    "What's your recommendation for <TASK>?",
    "I'm seeking your input on how to <TASK>.",
    "Can you provide some insights into <TASK>?",
    "How can I successfully accomplish <TASK>?",
    "What steps are involved in <TASK>?",
    "I'm curious about the best way to <TASK>.",
    "Could you show me the ropes for <TASK>?",
    "I need to know how to go about <TASK>.",
    "What are the essential steps for <TASK>?",
    "Is there a specific method for <TASK>?",
    "I'd like to get some advice on <TASK>.",
    "Can you explain the process of <TASK>?",
    "I'm looking for guidance on how to approach <TASK>.",
    "What's the proper way to handle <TASK>?",
    "How should I proceed with <TASK>?",
    "I'm interested in your expertise on <TASK>.",
    "Could you walk me through the steps for <TASK>?",
    "I'm not sure where to begin when it comes to <TASK>.",
    "What should I prioritize when doing <TASK>?",
    "How can I ensure success with <TASK>?",
    "I'd appreciate some tips on <TASK>.",
    "Can you provide a roadmap for <TASK>?",
    "What's the recommended course of action for <TASK>?",
    "I'm seeking your guidance on <TASK>.",
    "Could you offer some suggestions for <TASK>?",
    "I'd like to know the steps to take for <TASK>.",
    "What's the most effective way to achieve <TASK>?",
    "How can I make the most of <TASK>?",
    "I'm wondering about the best approach to <TASK>.",
    "Can you share your insights on <TASK>?",
    "What steps should I follow to complete <TASK>?",
    "I'm looking for advice on <TASK>.",
    "What's the strategy for successfully completing <TASK>?",
    "How should I prepare myself for <TASK>?",
    "I'm not sure where to start with <TASK>.",
    "What's the procedure for <TASK>?",
    "Could you provide some guidance on <TASK>?",
    "I'd like to get some tips on how to <TASK>.",
    "Can you explain how to tackle <TASK> step by step?",
    "I'm interested in understanding the process of <TASK>.",
    "What are the key steps to <TASK>?",
    "Is there a specific method that works for <TASK>?",
    "I'd appreciate your advice on successfully completing <TASK>.",
    "Can you shed light on the best way to <TASK>?",
    "What would you recommend as the first step to <TASK>?",
    "How do I initiate <TASK>?",
    "I'm inquiring about the recommended steps for <TASK>.",
    "Could you share some insights into <TASK>?",
    "I'm seeking your expertise on <TASK>.",
    "What's your recommended approach for <TASK>?",
    "I'd like some guidance on where to start with <TASK>.",
    "Can you provide recommendations for <TASK>?",
    "What's your advice for someone looking to <TASK>?",
    "I'm seeking your input on the process of <TASK>.",
    "How can I achieve success with <TASK>?",
    "What's the best way to navigate <TASK>?",
    "I'm curious about the steps required for <TASK>.",
    "Could you show me the proper way to <TASK>?",
    "I need to know the necessary steps for <TASK>.",
    "What's the most efficient method for <TASK>?",
    "I'd appreciate your guidance on <TASK>.",
    "Can you explain the steps involved in <TASK>?",
    "I'm looking for recommendations on how to approach <TASK>.",
    "What's the right way to handle <TASK>?",
    "How should I manage <TASK>?",
    "I'm interested in your insights on <TASK>.",
    "Could you provide a step-by-step guide for <TASK>?",
    "I'm not sure how to start when it comes to <TASK>.",
    "What are the key factors to consider for <TASK>?",
    "How can I ensure a successful outcome with <TASK>?",
    "I'd like some tips and tricks for <TASK>.",
    "Can you offer a roadmap for accomplishing <TASK>?",
    "What's the preferred course of action for <TASK>?",
    "I'm seeking your expert advice on <TASK>.",
    "Could you suggest some best practices for <TASK>?",
    "I'd like to understand the necessary steps to complete <TASK>.",
    "What's the most effective strategy for <TASK>?",
]

template_grounding_cogvlm = [
    "Where is <TASK>?",
    "Where is <TASK> in the image?",
    "Where is <TASK>? answer in [[x0,y0,x1,y1]] format.",
    "Can you point out <TASK> in the image and provide the bounding boxes of its location?",
    "Help me to locate <TASK> in and give me its bounding boxes, please.",
    "In the given, could you find and tell me the bounding boxes of <TASK>?",
    "Guide me to the location of <TASK> within the image by providing its bounding boxes.",
    "I'd like to know the exact bounding boxes of <TASK> in the photo.",
    "Would you kindly provide the bounding boxes of <TASK> located in the picture?",
    "Can you find <TASK> in and give me the bounding boxes of where it is located?",
    "I'm trying to locate <TASK> in. Can you determine its bounding boxes for me?",
    "What are the bounding boxes of <TASK> in the image?",
    "Can you disclose the position of <TASK> in the photograph by stating its bounding boxes?",
    "In, could you let me know the location of <TASK> in the form of bounding boxes?",
    "I need the bounding boxes of <TASK> in, can you please assist me with that?",
    "Where in is <TASK> located? Provide me with its bounding boxes, please.",
    "May I have the bounding boxes of <TASK>?",
    "In the photograph, could you pinpoint the location of <TASK> and tell me its bounding boxes?",
    "Can you please search and find <TASK> in, then let me know its bounding boxes?",
    "Please, point out the position of <TASK> in the image by giving its bounding boxes.",
    "What are the exact bounding boxes of <TASK> in the provided picture?",
    "Detect the location of <TASK> in and share the bounding boxes with me, please.",
    "In the picture, I'd like you to locate <TASK> and provide its coordinates.",
    "Please indicate the location of <TASK> in the photo by giving bounding boxes.",
    "Find <TASK> in and share its coordinates with me.",
    "Could you please help me find the bounding boxes of <TASK> in the image?",
    "I am looking for the position of <TASK> in. Can you provide its bounding boxes?",
    "In the image, can you locate <TASK> and let me know its coordinates?",
    "I'd appreciate if you could find and tell me the bounding boxes of <TASK>.",
    "In, I need the bounding box bounding boxes of <TASK>.",
    "Point me to the location of <TASK> in the picture by providing its bounding boxes.",
    "Could you trace <TASK> in and tell me its bounding boxes?",
    "Can you assist me in locating <TASK> in, and then provide its bounding boxes?",
    "I'm curious, what are the bounding boxes of <TASK> in the photo?",
    "Kindly share the bounding boxes of <TASK> located in the image.",
    "I would like to find <TASK> in. Can you give me its bounding boxes?",
    "Can you spot <TASK> in and disclose its bounding boxes to me?",
    "Please, reveal the location of <TASK> in the provided photograph as coordinates.",
    "Help me locate and determine the bounding boxes of <TASK>.",
    "I request the bounding boxes of <TASK> in the image.",
    "In the given, can you find <TASK> and tell me its bounding boxes?",
    "I need to know the position of <TASK> in as bounding boxes.",
    "Locate <TASK> in and provide its bounding boxes, please.",
    "Assist me in finding <TASK> in the photo and provide the bounding box bounding boxes.",
    "In, can you guide me to the location of <TASK> by providing bounding boxes?",
    "I'd like the bounding boxes of <TASK> as it appears in the image.",
    "What location does <TASK> hold in the picture? Inform me of its bounding boxes.",
    "Identify the position of <TASK> in and share its bounding boxes.",
    "I'd like to request the bounding boxes of <TASK> within the photo.",
    "How can I locate <TASK> in the image? Please provide the bounding boxes.",
    "I am interested in knowing the bounding boxes of <TASK> in the picture.",
    "Assist me in locating the position of <TASK> in the photograph and its bounding box bounding boxes.",
    "In the image, I need to find <TASK> and know its bounding boxes. Can you please help?"
    "Can you give me a description of the region <TASK> in image?",
    "In the provided image, would you mind describing the selected area <TASK>?",
    "I need details about the area <TASK> located within image.",
    "Could you please share some information on the region <TASK> in this photograph?",
    "Describe what's happening within the coordinates <TASK> of the given image.",
    "What can you tell me about the selected region <TASK> in the photo?",
    "Please, can you help me understand what's inside the region <TASK> in image?",
    "Give me a comprehensive description of the specified area <TASK> in the picture.",
    "I'm curious about the area <TASK> in the following image. Can you describe it?",
    "Please elaborate on the area with the coordinates <TASK> in the visual.",
    "In the displayed image, help me understand the region defined by <TASK>.",
    "Regarding the image, what's going on in the section <TASK>?",
    "In the given photograph, can you explain the area with coordinates <TASK>?",
    "Kindly describe what I should be seeing in the area <TASK> of image.",
    "Within the input image, what can be found in the region defined by <TASK>?",
    "Tell me what you see within the designated area <TASK> in the picture.",
    "Please detail the contents of the chosen region <TASK> in the visual input.",
    "What's inside the area <TASK> of the provided graphic?",
    "I'd like some information about the specific region <TASK> in the image.",
    "Help me understand the details within the area <TASK> in photograph.",
    "Can you break down the region <TASK> in the image for me?",
    "What is taking place within the specified area <TASK> in this capture?",
    "Care to elaborate on the targeted area <TASK> in the visual illustration?",
    "What insights can you provide about the area <TASK> in the selected picture?",
    "What does the area <TASK> within the given visual contain?",
    "Analyze and describe the region <TASK> in the included photo.",
    "Please provide details for the area marked as <TASK> in this photographic.",
    "For the image, can you assess and describe what's happening at <TASK>?",
    "Fill me in about the selected portion <TASK> within the presented image.",
    "In the image, elaborate on the details found within the section <TASK>.",
    "Please interpret and describe the area <TASK> inside the given picture.",
    "What information can you give me about the coordinates <TASK> in image?",
    "Regarding the coordinates <TASK> in image, can you provide a description?",
    "In the photo, can you delve into the details of the region <TASK>?",
    "Please provide insights on the specified area <TASK> within the graphic.",
    "Detail the chosen region <TASK> in the depicted scene.",
    "Can you discuss the entities within the region <TASK> of image?",
    "I'd appreciate a breakdown of the area <TASK> in the displayed image.",
    "What's the story in the section <TASK> of the included visual?",
    "Please enlighten me about the region <TASK> in the given photo.",
    "Offer a thorough description of the area <TASK> within the illustration.",
    "What can you share about the area <TASK> in the presented image?",
    "Help me grasp the context of the region <TASK> within image.",
    "Kindly give an overview of the section <TASK> in photo.",
    "What details can you provide about the region <TASK> in the snapshot?",
    "Can you divulge the contents of the area <TASK> within the given image?",
    "In the submitted image, please give a synopsis of the area <TASK>.",
    "In the image, please describe the bounding box <TASK>.",
    "Please describe the region <TASK> in the picture.",
    "Describe the bbox <TASK> in the provided photo.",
    "What can you tell me about the area <TASK> within the image?",
    "Could you give me a description of the rectangular region <TASK> found in?",
    "In, what elements can be found within the coordinates <TASK>?",
    "Please provide details for the area within the bounding box <TASK> in.",
    "Can you generate a description for the selected region <TASK> in the image?",
    "Kindly describe the objects or scenery in the bounding box <TASK> within.",
    "What details can you provide for the rectangle defined by the coordinates <TASK> in?",
    "In relation to the picture, please describe the content of the area marked by <TASK>.",
    "I'd like to know more about the area <TASK> in the given image. Can you describe it?",
    "Can you help me by describing the part of that lies within the bounding box <TASK>?",
    "What's happening in the section of the photo enclosed by the coordinates <TASK>?",
    "Describe the image content present in the specified rectangular area <TASK> of.",
    "Please provide information about the area within the bounding box <TASK> in the picture.",
    "Could you offer a description of the contents in the selected area <TASK> of the image?",
    "I'm curious about the area <TASK> in. Can you provide a description of it?",
    "What can be observed in the rectangular region <TASK> in the photograph?",
    "Please explain what is contained in the portion of defined by the box <TASK>.",
    "In the photograph, can you describe the objects or scenery enclosed by <TASK>?",
    "Can you give a brief explanation of the specified area <TASK> in the image?",
    "What does the area <TASK> look like in the context of the image?",
    "Could you please describe the contents of the bounding box <TASK> in the given image?",
    "I would like to know more about the rectangular region <TASK> within the picture. Can you describe it?",
    "Please tell me about the area <TASK> in the image. What does it contain?",
    "Help me understand what's happening in the selected bounding box <TASK> within.",
    "Can you provide a description of the area <TASK> in the image?",
    "What sort of things can be seen in the region <TASK> of the photo?",
    "Describe what can be found within the bounds of <TASK> in the image.",
    "In, can you paint a picture of the area enclosed by coordinates <TASK>?",
    "Please provide a detailed account of the area covered by the bounding box <TASK> in.",
    "Give me a vivid description of what's happening in the area <TASK> within the snapshot.",
    "In the image, what do you observe within the rectangular box defined by the coordinates <TASK>?",
    "Could you give me a breakdown of the content in the specified area <TASK> of the picture?",
    "Please elucidate the area<TASK> of the image.",
    "I'd appreciate it if you could describe the portion of that lies within the rectangle <TASK>.",
    "Can you share some insights about the rectangular region <TASK> in the image?",
    "Help me visualize the section of the photo enclosed by the bounding box <TASK>.",
    "Would you kindly provide a description for the content within the rectangular area <TASK> of?",
    "In, can you tell me more about the area specified by the bounding box <TASK>?",
    "Please describe what can be seen in the rectangular region <TASK> of the image.",
    "Can you analyze the content of the area <TASK> within the photograph?",
    "In the provided image, please explain the content within the region <TASK>.",
    "I'm interested in the selected rectangle <TASK> in. Can you tell me more about it?",
    "Explain what can be found in the bounding box <TASK> in the context of the image.",
    "Kindly share your observations about the rectangular region <TASK> within.",
    "I'd like a thorough description of the area <TASK> in the image.",
    "Could you please provide a description of the rectangular area <TASK> in?",
    "Please describe the section of the picture defined by the bbox <TASK>.",
    "Tell me more about the scenery or objects within the rectangular region <TASK> in.",
    "Would you kindly describe the content of the area enclosed by <TASK> in the image?",
    "Help me understand the objects or scenery within the bounding box <TASK> in the image.",
    "I would like to know about the section of the image enclosed by the rectangle <TASK>. Can you describe it?",
    "Describe the selected rectangular area <TASK> in the photo.",
    "Tell me about the region <TASK> of the image.",
    "I request a description of the area <TASK> in the picture.",
    "Can you elaborate on the content of the bounding box <TASK> in?",
    "Please share details about the rectangular region <TASK> within the image.",
    "What can I find in the bbox <TASK> of the provided image?",
    "In the image, could you provide a description for the coordinates <TASK>?",
    "Could you tell me more about the area <TASK> in the snapshot?",
    "Fill me in on the details of the rectangular box <TASK> within the image.",
    "What's going on in the section of contained within the bounding box <TASK>?",
    "I would like a description of the content within the bbox <TASK> in.",
    "Please enlighten me about the area <TASK> in the photograph.",
    "Can you give me a visual rundown of the area <TASK> in?",
    "Describe the visual elements within the selected area <TASK> of the image.",
    "Tell me what you see in the area <TASK> within the context of the image.",
    "Explain the content within the rectangular region <TASK> of the image.",
    "I'd like some information about the bounding box <TASK> in the photo.",
    "What is happening within the rectangle defined by coordinates <TASK> in the image?",
    "Please describe the content within the area <TASK> displayed in the image.",
    "What can be seen in the bounding box <TASK> in the context of the provided image?",
    "Share some details about the objects or environment within the bounding box <TASK> in.",
    "Please describe the area <TASK> in the image for me.",
    "Can you generate a description of the contents within the selected region <TASK> in?",
    "What objects or scenery can be found in the area <TASK> in the image?",
    "Please tell me more about the rectangular section <TASK> in the photo.",
    "Could you describe the content of the bbox <TASK> in the image?",
    "What does the selected region <TASK> in the image encompass?",
    "I am interested in the region <TASK> of the image; please describe it.",
    "Can you provide some context for the area <TASK> within the picture?",
    "Please give me some details about the rectangle <TASK> in the image.",
    "In the photo, what can you see within the region defined by the bounding box <TASK>?",
    "I would like a detailed description of the portion of enclosed by the bbox <TASK>.",
    "Please help me understand the content present within the rectangle <TASK> in.",
    "Would you mind describing the rectangular area <TASK> in the provided image?"
]
